Cover | TOC | Chap | Prev Chap | Prev Fig | Next Fig | Next Chap |
![]() |
Figure 30.2
A filter used to make a group of radio buttons that select among backgrounds. |
|
Click on the image to view the VRML scene. |
#VRML V2.0 utf8 # The VRML 2.0 Sourcebook # Copyright (c) 1997 # Andrea L. Ames, David R. Nadeau, and John L. Moreland Group { children [ # Bindable Backgrounds (cyan, red, blue) DEF Back1 Background { skyColor [ 0.0 0.2 0.7, 0.0 0.5 1.0, 1.0 1.0 1.0 ] skyAngle [ 1.309, 1.571 ] groundColor [ 0.1 0.1 0.0, 0.4 0.25 0.2, 0.6 0.6 0.6 ] groundAngle [ 1.309, 1.571 ] }, DEF Back2 Background { skyColor [ 1.0 0.0 0.0, 1.0 0.4 0.0, 1.0 1.0 0.0 ] skyAngle [ 1.309, 1.571 ] groundColor [ 0.1 0.1 0.0, 0.5 0.25 0.2, 0.6 0.6 0.2 ] groundAngle [ 1.309, 1.571 ] }, DEF Back3 Background { skyColor [ 1.0 0.0 0.8, 0.5 0.0 0.8, 0.0 0.0 0.8 ] skyAngle [ 1.309, 1.571 ] groundColor [ 0.0 0.0 0.1, 0.0 0.1 0.3, 0.3 0.3 0.6 ] groundAngle [ 1.309, 1.571 ] }, # Shapes to act as buttons (cyan, red, blue) Transform { translation -3.0 0.0 0.0 children [ Shape { appearance Appearance { material Material { diffuseColor 0.0 0.5 0.8 } } geometry Box { } }, DEF BackButton1 TouchSensor { } ] }, Group { children [ Shape { appearance Appearance { material Material { diffuseColor 1.0 0.3 0.3 } } geometry Sphere { } }, DEF BackButton2 TouchSensor { } ] }, Transform { translation 3.0 0.0 0.0 children [ Shape { appearance Appearance { material Material { diffuseColor 0.2 0.2 0.8 } } geometry Cone { } }, DEF BackButton3 TouchSensor { } ] }, # Scripts DEF Filter1 Script { url "javascript: function set_boolean( bool, eventTime ) { if ( bool == true ) { true_changed = true; } else { false_changed = true; } }" eventIn SFBool set_boolean eventOut SFBool true_changed eventOut SFBool false_changed }, DEF Filter2 Script { url "javascript: function set_boolean( bool, eventTime ) { if ( bool == true ) { true_changed = true; } else { false_changed = true; } }" eventIn SFBool set_boolean eventOut SFBool true_changed eventOut SFBool false_changed }, DEF Filter3 Script { url "javascript: function set_boolean( bool, eventTime ) { if ( bool == true ) { true_changed = true; } else { false_changed = true; } }" eventIn SFBool set_boolean eventOut SFBool true_changed eventOut SFBool false_changed }, ] } ROUTE BackButton1.isActive TO Filter1.set_boolean ROUTE BackButton2.isActive TO Filter2.set_boolean ROUTE BackButton3.isActive TO Filter3.set_boolean ROUTE Filter1.true_changed TO Back1.set_bind ROUTE Filter2.true_changed TO Back2.set_bind ROUTE Filter3.true_changed TO Back3.set_bind